package cn.zhaoyuening.crm.dao;

import java.io.Serializable;
import java.util.List;

import cn.zhaoyuening.crm.domain.CrmCourseType;

/**
 * dao公共接口 
 * @author Zhao
 *
 * @param <T>
 */
public abstract interface BaseDao<T> {
	public void save(T t);
	public void delete(T t);
	public T findById(Serializable id);
	
	/**
	 * 添加或编辑
	 * @param t
	 */
	public void addOrEdit(T t);
	/**
	 * 查找所有
	 * @return
	 */
	public List<T> findAll();
	/**
	 * 高级查询
	 * @param sql where 条件语句
	 * @param params 参数对象
	 * @return
	 */
	public List<T> findAll(String sql,Object[] objects);
	/**
	 * 高级查询，分页查询
	 * @param hql where 条件语句
	 * @param params 参数对象
	 * @param startIndex 起始索引
	 * @param pageSize 页面大小
	 * @return
	 */
	public List<T> findAll(String hql, Object[] params, int startIndex, int pageSize);
	/**
	 * 取得所有记录数量
	 * @return
	 */
	public long getTotalRecord();
}
